# {{ ansible_managed }}

[DEFAULT]
# Disable stderr logging
use_stderr = False
bind_ip = 0.0.0.0
bind_port = {{ swift_proxy_port }}
workers = {{ swift_proxy_server_workers }}

user = {{ swift_system_user_name }}

{% set _statsd_host = swift_proxy_vars.statsd_host | default(swift.statsd_host | default(statsd_host | default(False))) %}
{% if _statsd_host | bool %}
log_statsd_host = {{ _statsd_host }}
log_statsd_port = {{ swift_proxy_vars.statsd_port | default(swift.statsd_port | default(statsd_port)) }}
log_statsd_default_sample_rate = {{ swift_proxy_vars.statsd_default_sample_rate | default(swift.statsd_default_sample_rate | default(statsd_default_sample_rate)) }}
log_statsd_sample_rate_factor = {{ swift_proxy_vars.statsd_sample_rate_factor | default(swift.statsd_sample_rate_factor | default(statsd_sample_rate_factor))}}
log_statsd_metric_prefix = {{ swift_proxy_vars.statsd_metric_prefix | default(swift.statsd_metric_prefix | default(inventory_hostname)) }}
{% endif %}

[pipeline:main]
pipeline = {{ swift_middleware_list | join(' ') }}

[filter:copy]
use = egg:swift#copy

[app:proxy-server]
use = egg:swift#proxy
node_timeout = 60
conn_timeout = 3.5
account_autocreate = true
{% if swift_proxy_vars is defined %}
{%   if swift_proxy_vars.read_affinity is defined %}
read_affinity = {{ swift_proxy_vars.read_affinity }}
{%     set swift_sorting_method = 'affinity' %}
{%   endif %}
{%   if swift_proxy_vars.write_affinity is defined %}
write_affinity = {{ swift_proxy_vars.write_affinity }}
{%     if swift_proxy_vars.write_affinity_node_count is defined %}
write_affinity_node_count = {{ swift_proxy_vars.write_affinity_node_count }}
{%     endif %}
{%   endif %}
{% endif %}
sorting_method = {{ swift_sorting_method }}

{% if 'tempauth' in swift_middleware_list %}
[filter:tempauth]
use = egg:swift#tempauth
{% for user in swift_tempauth_users %}
{{ user }}
{% endfor %}
{% endif %}

{% if 'authtoken' in swift_middleware_list %}
[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
auth_type = {{ swift_keystone_auth_plugin }}
auth_url = {{ keystone_service_adminuri }}
www_authenticate_uri = {{ keystone_service_internaluri }}
insecure = {{ keystone_service_adminuri_insecure | bool }}
region_name = {{ keystone_service_region }}
project_domain_id = {{ swift_service_project_domain_id }}
user_domain_id = {{ swift_service_user_domain_id }}
project_name = {{ swift_service_project_name }}
username = {{ swift_service_user_name }}
password = {{ swift_service_password }}
delay_auth_decision = {{ swift_delay_auth_decision }}
include_service_catalog = False
{% if memcached_servers is defined %}
memcached_servers = {{ memcached_servers }}
cache = swift.cache

token_cache_time = 300
revocation_cache_time = 60

memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcached_encryption_key }}
{% endif %}
{% endif %}

{% if 'keystoneauth' in swift_middleware_list %}
[filter:keystoneauth]
use = egg:swift#keystoneauth
{% if swift_allow_all_users is defined and swift_allow_all_users == True %}
{% if 'ceilometer' in swift_middleware_list %}
operator_roles = admin, {{ swift_operator_role }}, _member_, {{ swift_reselleradmin_role }}
{% else %}
operator_roles = admin, {{ swift_operator_role }}, _member_
{% endif %}
{% else %}
{% if 'ceilometer' in swift_middleware_list %}
operator_roles = admin, {{ swift_operator_role }}, {{ swift_reselleradmin_role }}
{% else %}
operator_roles = admin, {{ swift_operator_role }}
{% endif %}
{% endif %}
# The reseller admin role has the ability to create and delete accounts
reseller_admin_role = {{ swift_reselleradmin_role }}
{% endif %}

[filter:healthcheck]
use = egg:swift#healthcheck

[filter:cache]
use = egg:swift#memcache

[filter:ratelimit]
use = egg:swift#ratelimit

[filter:domain_remap]
use = egg:swift#domain_remap

[filter:catch_errors]
use = egg:swift#catch_errors

[filter:cname_lookup]
use = egg:swift#cname_lookup

[filter:staticweb]
use = egg:swift#staticweb

[filter:tempurl]
use = egg:swift#tempurl

[filter:formpost]
use = egg:swift#formpost

[filter:name_check]
use = egg:swift#name_check

[filter:list-endpoints]
use = egg:swift#list_endpoints

[filter:proxy-logging]
use = egg:swift#proxy_logging

[filter:bulk]
use = egg:swift#bulk

[filter:container-quotas]
use = egg:swift#container_quotas

[filter:slo]
use = egg:swift#slo

[filter:dlo]
use = egg:swift#dlo

[filter:versioned_writes]
use = egg:swift#versioned_writes
allow_versioned_writes = True

[filter:account-quotas]
use = egg:swift#account_quotas

[filter:gatekeeper]
use = egg:swift#gatekeeper

[filter:container_sync]
use = egg:swift#container_sync

[filter:xprofile]
use = egg:swift#xprofile

{% if 'ceilometer' in swift_middleware_list %}
[filter:ceilometer]
paste.filter_factory = ceilometermiddleware.swift:filter_factory
control_exchange = swift
driver = messagingv2
url = {{ swift_oslomsg_notify_transport }}://{% for host in swift_oslomsg_notify_servers.split(',') %}{{ swift_oslomsg_notify_userid }}:{{ swift_oslomsg_notify_password }}@{{ host }}:{{ swift_oslomsg_notify_port }}{% if not loop.last %},{% else %}/{{ swift_oslomsg_notify_vhost }}{% endif %}{% endfor %}

topic = notifications
{% if swift_gnocchi_service_project_id is defined %}
ignore_projects = {{ swift_gnocchi_service_project_id }}
{% endif %}
log_level = WARN
{% endif %}
